package com.xuhao.examai.application.services;

import com.xuhao.examai.domain.models.User;
import com.xuhao.examai.common.PageResult;
import org.springframework.security.core.userdetails.UserDetailsService;
import java.util.List;

public interface UserService extends UserDetailsService {

	/**
	 * 用户注册
	 */
	User register(User user);

	/**
	 * 更新用户个人信息
	 */
	User updateProfile(User user);

	/**
	 * 更新用户角色
	 */
	User updateRole(Long userId, User.Role role);

	/**
	 * 根据ID获取用户
	 */
	User getUserById(Long id);

	/**
	 * 根据用户名获取用户
	 */
	User getUserByUsername(String username);

	/**
	 * 根据邮箱获取用户
	 */
	User getUserByEmail(String email);

	/**
	 * 获取所有用户
	 */
	List<User> getAllUsers();

	/**
	 * 分页查询用户
	 */
	PageResult<User> getUsersByPage(Integer current, Integer size, String keyword, String role);

	/**
	 * 根据角色获取用户列表
	 */
	List<User> getUsersByRole(User.Role role);

	/**
	 * 删除用户
	 */
	void deleteUser(Long id);

	/**
	 * 激活/禁用用户
	 */
	User toggleUserStatus(Long userId);

	/**
	 * 重置用户密码
	 */
	User resetPassword(Long userId, String newPassword);

	/**
	 * 更新用户头像
	 */
	User updateAvatar(Long userId, String avatarUrl);

	/**
	 * 检查用户名是否存在
	 */
	boolean existsByUsername(String username);

	/**
	 * 检查邮箱是否存在
	 */
	boolean existsByEmail(String email);

	/**
	 * 更新最后登录时间
	 */
	void updateLastLoginTime(Long userId);
}